TOP

دالات SQL NULL

دالات SQL IFNULL () و ISNULL () و COALESCE () و NVL ()


لنلق نظرة على الجدول التالي "Products" ("المنتجات"):

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.35

افترض أن العمود "UnitsOnOrder" اختياري ويمكن أن يحتوي على القيمة NULL.

ضع في اعتبارك التعليمات التالية SELECT:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products

في المثال أعلاه ، إذا كانت أي من قيم "UnitsOnOrder" تساوي NULL ، فستكون النتيجة NULL.

قرار

MySQL

تسمح لك الدالة MySQL IFNULL () بإرجاع قيمة بديلة إذا كان التعبير يساوي NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products

أو يمكننا استخدام الدالة COALESCE () ، على سبيل المثال:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

SQL Server

تسمح لك الدالة SQL Server ISNULL () بإرجاع قيمة بديلة إذا كان التعبير يحتوي على القيمة NULL:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products

أو يمكننا استخدام الدالة COALESCE () ، على سبيل المثال:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

MS Access

ترجع الدالة MS Access IsNull () TRUE (-1) إذا كان التعبير فارغًا ، وإلا FALSE (0):

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products

Oracle

تحقق الوظيفة Oracle NVL () نفس النتيجة:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products

أو يمكننا استخدام الدالة COALESCE () ، على سبيل المثال:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products